#include <iostream>
#include <stack>

using namespace std;

int m;
stack<int> A, B;

int main()
{
	cin >> m;
	
	while (m -- )
	{
		int op, x;
		cin >> op;
		
		if (!op)
		{
			cin >> x;
			
			A.push(x);
			
			int t = x;
			 if (!B.empty()) t = max(t, B.top());
			B.push(t);
		}
		else if (op == 1)
		{
			A.pop();
			B.pop();
		}
		else 
		{
			if (!B.empty()) cout << B.top() << endl;
			else cout << 0 << endl;
		}
	}
	
	return 0;
}